package com.kingmed.kmss.common.enums.base.code;

/**
 * 枚举了一些常用API操作码(处理自定义)
 */
public enum ResultCode implements IResultCode {

    //接口正常，程序正常，业务正常的状态码
    SUCCESS(200, "操作成功"),
    //致命内部异常，无知错误的状态码，前端报红色error
    FATAL_ERROR(-1, "内部异常"),

    //跟认证和鉴权相关的状态码（400-499之间，可以自定义），前端报红色error
    NOT_FOUND(404, "资源未找到"),
    UNAUTHORIZED(401, "暂未登录或token已经过期"),
    VALIDATE_FAILED(402, "参数检验失败"),
    FORBIDDEN(403, "没有相关权限"),


    //系统程序异常相关的状态码（500-599之间，可以自定义），前端报红色error
    BPMN_PROCESS_KEY_FAILED(591, "流程定义key错误"),
    BPMN_TASK_KEY_FAILED(592, "任务定义key错误"),
    PROCESS_SUBMITTED_EXCEPTION(593, "审批流程提交失败"),
    PROCESS_NO_AUDIT_USER_EXCEPTION(594, "找不到下一审批人"),

    INTERNAL_API_EXCEPTION(581, "内部服务调用异常"),
    EXTERNAL_API_EXCEPTION(582, "外部服务调用异常"),

    UNKNOWN_EXCEPTION(-1, "系统异常，请联系管理员"),


    //业务类异常的状态码，比如找不到记录，数据无效，参数校验错误导致的异常（600-699之间，可以自定义），前端报黄色warning

    //从原来的500改成600，统一响应的fail不应该设置成500
    FAILED(600, "操作失败"),
    COMMON_BUSINESS_EXCEPTION(600, "业务操作异常"),
    //使用message配置文件的异常处理
    MESSAGE_EXCEPTION(601, "业务操作异常"),
    //查询条件参数校验异常
    REQ_VALIDATE_FAILED(611, "查询条件参数校验失败，请输入正确的查询条件"),
    NO_RECORD_EXCEPTION(612, "记录不存在"),




    //提示类的状态码，比如业务操作，必填提示（700-799之间，可以自定义），前端报蓝色info
    NO_FILE_TIP(711, "无上传文件");

    private Integer code;
    private String message;

    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}
